<?php
/* 
* @Author: Jerry-chen
* @Date:   2014-07-17 15:19:04
* @Last Modified time: 2014-07-23 17:08:34
* @Last Modified by: Jerry-chen<uranusbill@163.com>
* @ Copyright (c) 2014 http://www.cooldreamer.com All rightsreserved.
*/

class ShopcarControl extends PublicControl
{
	
	function index()
	{
		
		//检测用户是否登录,
		if(!isset($_SESSION['username']) || !isset($_SESSION['uid'])){
			// Q('post.');
			$shopcardata = array(
				'goodsid'=>Q('post.goodsid'),
				'timeid'=>Q('post.timeid'),
				'number'=>Q('post.shopcarnum'),
				'goodsprice'=>Q('post.goodsprice')

				);
			//如果为第一次进来。SESSION为空，那就直接加入SESSION
			if(empty($_SESSION['shopcar'])){
				$shopcar[]=$shopcardata;
				session('shopcar',$shopcar);
				// p($_SESSION);
				$this->success('添加购物车成功','');
			}else{
				$oldshopcar =$_SESSION['shopcar'];

				//循环比对，是否存在此商品
				foreach ($oldshopcar as $key => $value) {
					//如果SESSION存在，所先要判断是否为相同的商品，如果相同，就改数量
					if($value['goodsid']==$shopcardata['goodsid'] && $value['timeid']==$shopcardata['timeid']&&$value['goodsprice']==$shopcardata['goodsprice'])
					{
						$oldshopcar[$key]['number']=$value['number']+$shopcardata['number'];
						//重新压入SESSION
						// p($oldshopcar);
						session('shopcar',$oldshopcar);
						// p($_SESSION);
						$this->success('添加购物车成功','');
					}
					
					
				}
				// 前面的对比不相等，就会走后面的，那就把数组压入SESSION 
				// 取取之前的数据，压入到SHOPCAR数组 
				$shopcar=$_SESSION['shopcar'];
				//将现在的数据，压入到SHOPCAR数组
				// p($shopcar);
				$shopcar[]=$shopcardata;
				// 将SHOPCAR数组压入SESSION
				session('shopcar',$shopcar);
				// p($_SESSION);
				// p($oldshopcar);
				$this->success('添加购物车成功','');

			}
		}else{
			//如果登陆，就写入数据库
			$shopcarData = array(
				'goodsid'=>Q('post.goodsid'),
				'timeid'=>Q('post.timeid'),
				'number'=>Q('post.shopcarnum'),
				'goodsprice'=>Q('post.goodsprice'),
				'uid'=>session('uid')

				);
			//如果为第一次进来。先找找对应客户的数据库是否有数据，如果没有直接添加
			$shopData = K('Shopcar')->get_all(array('uid'=>session('uid')));
			// p($shopData);die;
			if(!$shopData){
				$result  = K('Shopcar')->add_($shopcarData);
				if($result){
					$this->success('添加购物车成功','');
				}
				
			}else{
				// 如果查找，数据库里面有数据，那就把数据拿出来进行比对
				//循环比对，是否存在此商品
				foreach ($shopData as $k => $v) {
					//如果SESSION存在，所先要判断是否为相同的商品，如果相同，就改数量
					if($v['goodsid']==$shopcarData['goodsid'] && $v['timeid']==$shopcarData['timeid']&&$v['goodsprice']==$shopcarData['goodsprice'])
					{
						// 如果有相同的商品，就更改数量 
						$number = $v['number']+$shopcarData['number'];
						$shop = array(
							'goodsid'=>Q('post.goodsid'),
							'timeid'=>Q('post.timeid'),
							'number'=>$number,
							'goodsprice'=>Q('post.goodsprice'),
							'uid'=>session('uid')
							);
						//更新数据
						$result = K('Shopcar')->updata(array('uid'=>session('uid')),$shop);
						if($result)
						{
							$this->success('添加购物车成功','');
						}
					}	
				}
				// 前面的对比不相等，就会走后面的，直接插入数据
				$result  = K('Shopcar')->add_($shopcarData);
				if($result){
					$this->success('添加购物车成功','');
				}	
			}
		}
		
	}
	/**
	 * [shopcarlist description]
	 * @return [type] [购物车列表]
	 */
	public function shopcarlist()
	{
		// p($_SESSION['shopcar']);
		//检测用户是否登录
		session('step',2);
		//没有登陆就读SESSION里面的数据
		if(!isset($_SESSION['username']) || !isset($_SESSION['uid'])||!isset($_SESSION['nickname'])){
			//如果 SESSION没有SHOPCAR，给它一个0，为也防止UNDEFINE报错。
			if(!isset($_SESSION['shopcar']))
			{
				$_SESSION['shopcar'] = null;
			}
			//开始叛断	
			if(!$_SESSION['shopcar']){
				$shopcarData = 0;
			}else{
				$shopcarData = session('shopcar');
				
				//循环取出数据,且组合数组
				//count数据,主要是为了，控制前台数据的行高
				$linheight = count($shopcarData)*97;
				$this->assign('linheight',$linheight);
				//给COUNT一个空值
					$count=0;
				foreach ($shopcarData as $key => $value) 
				{
					
					// 根据得到商品ID查出商品
					$goodsname = K('Goods')->get_one(array('goodsid'=>$value['goodsid']),array('goodsname','goodsid'));
					$shopcarData[$key]['goodsname']=$goodsname['goodsname'];	
					// 根据时间ID，查出时间
					$timename = K('Goodstime')->get_one(array('timeid'=>$value['timeid']),array('time'));
					$shopcarData[$key]['timename']=$timename['time'];	
					// 根据单价ID查出单价
					$price = K('Goodsprice')->get_one(array('goodsprice'=>$value['goodsprice']),array('goodstimeid','countticket','price'));
					$shopcarData[$key]['price']=$price['price'];	
					//小计
					// $count = $shopcarData[$key]['price']*$shopcarData[$key]['number']+$count;
					// p($count);
				}
				// $this->assign('count',$count);
				//分配数据
				$this->assign('shopcarData',$shopcarData);
				// p($shopcarData);
			}
			
		}else{
		//登陆了就读数据库里面的数据
			//醒出数据里面所有的数据
			$shopcarData = K('Shopcar')->get_all(array('uid'=>session('uid')));
			//如果为真，就处理数组，如果为假，输出0，方便前台判断
			if($shopcarData){
				//循环取出数据,且组合数组
				//count数据,主要是为了，控制前台数据的行高
				$linheight = count($shopcarData)*97;
				$this->assign('linheight',$linheight);
				//给COUNT一个空值
					$count=0;
				foreach ($shopcarData as $key => $value) 
				{
					
					// 根据得到商品ID查出商品
					$goodsname = K('Goods')->get_one(array('goodsid'=>$value['goodsid']),array('goodsname','goodsid'));
					$shopcarData[$key]['goodsname']=$goodsname['goodsname'];	
					// 根据时间ID，查出时间
					$timename = K('Goodstime')->get_one(array('timeid'=>$value['timeid']),array('time'));
					$shopcarData[$key]['timename']=$timename['time'];	
					// 根据单价ID查出单价
					$price = K('Goodsprice')->get_one(array('goodsprice'=>$value['goodsprice']),array('goodstimeid','countticket','price'));
					$shopcarData[$key]['price']=$price['price'];	
					//小计
					// $count = $shopcarData[$key]['price']*$shopcarData[$key]['number']+$count;
					// p($count);
				}
				

				// p($shopcarData);

			}else{
				$shopcarData=0;

			}
			// $this->assign('count',$count);
			//分配数据
			$this->assign('shopcarData',$shopcarData);
		}
		$this->display('shopcar.html');
	}
	/**
	 * [ajax_delgoods 删除购物车里面的数据]
	 * @return [type] [description]
	 */
	public function ajax_delgoods()
	{
		//先判断是否登陆，登陆就删除数据库里面的数据，如果没登陆就删除SESSION里面的数据
		if(!isset($_SESSION['username']) || !isset($_SESSION['uid'])||!isset($_SESSION['nickname'])){
			if($_SESSION['shopcar'])
			{
				$key = Q('post.sessionkey');
				$shopcarData = session('shopcar');
				foreach ($shopcarData as $k => $v) 
				{
						if($k==$key)
						{
							//先把SESSION里面的值付给一个变量，用UNSET删除这个KEY值
							unset($shopcarData[$k]);

						}
				}
				// 然后，用新的数组，覆盖原SESSION数据
				$_SESSION['shopcar']=$shopcarData;
				p($shopcarData)	;
			}
		}else{
			$shopcarid = Q('post.shopcarid');
			K('Shopcar')->del(array('shopcarid'=>$shopcarid));
			
		}

	}
	// 增加商品
	/**
	 * [ajax_addgoods 购物车，加号增加商品]
	 * @return [type] [description]
	 */
	public function ajax_addgoods()
	{
		//先判断是否登陆，登陆就删除数据库里面的数据，如果没登陆就删除SESSION里面的数据
		if(!isset($_SESSION['username']) || !isset($_SESSION['uid'])||!isset($_SESSION['nickname'])){
			if($_SESSION['shopcar'])
			{
				$key = Q('post.sessionkey');
				$shopcarData = session('shopcar');
				foreach ($shopcarData as $k => $v) 
				{
						if($k==$key)
						{
							//先把SESSION里面的值付给一个变量，用UNSET删除这个KEY值
							$shopcarData[$k]['number']=$shopcarData[$k]['number']+1;

						}
				}
				// 然后，用新的数组，覆盖原SESSION数据
				$_SESSION['shopcar']=$shopcarData;
				// p($shopcarData)	;
			}
		}else{
			$shopcarid = Q('post.shopcarid');
			$number = K('Shopcar')->get_one(array('shopcarid'=>$shopcarid),'number');
			$number = $number['number']+1;
			K('Shopcar')->edit(array('shopcarid'=>$shopcarid),array('number'=>$number));
			
		}
	}
	/**
	 * [ajax_reducegoods 购物车，减号增加商品]
	 * @return [type] [description]
	 */
	public function ajax_reducegoods()
	{
		//先判断是否登陆，登陆就删除数据库里面的数据，如果没登陆就删除SESSION里面的数据
		if(!isset($_SESSION['username']) || !isset($_SESSION['uid'])||!isset($_SESSION['nickname'])){
			if($_SESSION['shopcar'])
			{
				$key = Q('post.sessionkey');
				$shopcarData = session('shopcar');
				foreach ($shopcarData as $k => $v) 
				{
						if($k==$key)
						{
							//先把SESSION里面的值付给一个变量，用UNSET删除这个KEY值
							$shopcarData[$k]['number']=$shopcarData[$k]['number']-1;

						}
				}
				// 然后，用新的数组，覆盖原SESSION数据
				$_SESSION['shopcar']=$shopcarData;
				// p($shopcarData)	;
			}
		}else{
			$shopcarid = Q('post.shopcarid');
			$number = K('Shopcar')->get_one(array('shopcarid'=>$shopcarid),'number');
			if($number['number']>1){
				$number = $number['number']-1;
			}
			
			K('Shopcar')->edit(array('shopcarid'=>$shopcarid),array('number'=>$number));
			
		}
	}
}